// pages/coreAdmin/personnel/personnelInfo/personnelInfo.js
const app = getApp()
import config from '../../../../utils/config.js';
import util from '../../../../utils/util.js';
import Toast from '../../../../vant/toast/toast';
import {
  coreModel
} from '../../../../models/core';
const core = new coreModel();

Page({

  /**
   * 页面的初始数据
   */
  data: {
    config:config,
    nvabarData: {
      showCapsule: 1, //是否显示左上角图标   1表示显示    0表示不显示
      title: '',
      //  导航栏 中间的标题
    },
    height: app.globalData.height,
    navHeight: app.globalData.barheight,
    password:'1234',
    password2:'1234',

    type:'',     // 1 个人信息 2 食堂人员信息
    id:'',
    ifOwnInfo:false, // 是不是自己的信息
    index:'',    // 食堂人员列表数据下标
    checked: false,

    userInfo:{}, // 用户信息
    gateName:'', // 档口名称
    gateList:[], // 档口列表

    imgShow:false,
    imgActions: [{
      name: '拍照',
      color: '#F56545'
    },{
      name: '从相册获取',
      color: '#F56545'
    }],

    roleShow:false,
    roleActions:[{
      name: '食堂人员',
      color: '#F56545'
    },{
      name: '档口人员',
      color: '#F56545'
    }],

    gateShow:false,
    gateActions:[],
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
      // 1 个人信息 2 食堂人员信息
      var nvabarData = this.data.nvabarData;
      nvabarData.title = (options.type==1?'个人信息':'食堂人员信息')
      this.setData({
        nvabarData: nvabarData,
        type:options.type
      })
      if(options.type==1){
        this.getUserInfo();
      }else{
        this.setData({
          id: options.id,
          index:options.index
        })
        this.getCanteenUserInfo();
        this.ifOwn(options.id);  // 验证是不是修改自己的信息
      }
      
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  // 获取在线用户信息
  getUserInfo(){
    core.apiUserInfo({}, res => {
      res.sex = String(res.sex);
      this.setData({
        userInfo:res,
        checked:res.openStatus==1?true:false
      })
      this.getGateList();
    })
  },

  // 获取食堂人员信息
  getCanteenUserInfo(){
    core.apiCanteenUserInfo({id:this.data.id}, res => {
      res.sex = String(res.sex);
      this.setData({
        userInfo:res,
        checked:res.openStatus==1?true:false
      })
      this.getGateList();
    })
  },

  // 档口列表
  getGateList(){
    core.apiGateList({}, res => {
      this.updateGate(res);
    })
  },

  // 数据编排
  updateGate(gateRes){
    var newGate = [];
      for(var i=0;i<gateRes.length;i++){
          var list ={
            name: gateRes[i].name,
            id:gateRes[i].id,
            color: '#F56545'
          };
          if(this.data.userInfo.stallId){
              if(gateRes[i].id==this.data.userInfo.stallId){
                this.setData({
                  gateName:gateRes[i].name
                })
              }
          }
          newGate.push(list)
      }
      this.setData({
        gateActions:newGate
      })
  },

  // 验证是不是自己的信息
  ifOwn(id){
    var userInfo = wx.getStorageSync('userInfo')
    if(userInfo.id==id){
      this.setData({
        ifOwnInfo:true
      })
    }else{
      this.setData({
        ifOwnInfo:false
      })
    }
  },

  // 性别
  onChangeSex(event) {
    var userInfo = this.data.userInfo;
    userInfo.sex = event.detail;
    this.setData({
      userInfo:userInfo,
    });
  },

  // 状态
  onChange({ detail }) {
    // 需要手动对 checked 状态进行更新
    this.setData({ checked: detail });
  },

  // 修改头像
  onSelectImg(){
    this.setData({
      imgShow: true
    })
  },
  
  imgConfirm(event) {
    var selectType = event.detail.name;
    this.setData({
      imgShow: false
    })
    console.log(selectType);
    if(selectType=='拍照'){
        this.onImg('camera');
    }else{
        this.onImg('album');
    }
  },

  imgCancel() {
    this.setData({
      imgShow: false
    })
  },
  
  imgClose() {
    this.setData({
      imgShow: false
    })
  },

  onImg() { // 修改头像
    var that = this
    wx.chooseImage({
      count: 1, // 最多可以选择的图片张数，默认9
      sizeType: ['compressed'], // original 原图，compressed 压缩图，默认二者都有
      sourceType: ['album', 'camera'], // album 从相册选图，camera 使用相机，默认二者都有
      success: function (res) {
        const tempFilePaths = res.tempFilePaths[0]
        that.setData({
          avatar: tempFilePaths
        })
        wx.uploadFile({
          url: config.projectUrl + 'system/file/upload',
          filePath: tempFilePaths,
          name: 'file',
          header: {
            'content-type': 'multipart/form-data'
          },
          formData: {
            'fileType': 'img',
            'isFileName': 'false'
          },
          success(res) {
            const _resdata = JSON.parse(res.data)
            console.log(_resdata);
            if (_resdata.code == 200) {
              //上传成功后服务器返回来的图片地址
              var newImg = _resdata.data;
              that.setData({ ["userInfo.headImage"]: newImg});
            } else {
              util.msg(_resdata.msg)
            }

          },
          fail() {
            util.msg('头像修改失败')
          }
        })
      },
      fail: function () {
        // fail
      },
      complete: function () {
        // complete
      }
    })
  },

  // 角色
  onSelectRole(){
    this.setData({
      roleShow: true
    })
  },

  // 选择角色
  roleSelect(event){
    var selectType = event.detail.name;
    var userInfo = this.data.userInfo;
        userInfo.roleType = ( selectType=="食堂人员"?'1':'2')
    this.setData({
      roleShow: false,
      userInfo:userInfo
    })
  },

  roleClose(){
    this.setData({
      roleShow: false
    })
  },

  roleCancel(){
    this.setData({
      roleShow: false
    })
  },

  // 档口
  onSelectGate(){
    this.setData({
      gateShow: true
    })
  },

  // 选择档口
  gateSelect(event){
    var userInfo = this.data.userInfo;
    userInfo.stallId = event.detail.id
    this.setData({
      gateShow: false,
      userInfo:userInfo,
      gateName:event.detail.name
    })
  },

  gateClose(){
    this.setData({
      gateShow: false
    })
  },

  gateCancel(){
    this.setData({
      gateShow: false
    })
  },

  // 动态修改值(对象)
  upValm(e){
    var name = e.currentTarget.dataset.name
    let userInfo = this.data.userInfo;
    userInfo[name] = e.detail
    this.setData({
      userInfo: userInfo
    })
  },

  // 动态修改值
  upVal(e){
    var name = e.currentTarget.dataset.name
    let nameMap = {}
    nameMap[name] = e.detail
    this.setData(nameMap)
  },

  // 保存
  preservation(){
      var userInfo = this.data.userInfo;
      if(!userInfo.account){
        util.msg('请输入账号');
        return
      }
      if(!userInfo.name){
        util.msg('请输入姓名');
        return
      }
      if(userInfo.sex == 3){
        util.msg('请选择性别');
        return
      }
      if(!userInfo.contactTelephone){
        util.msg('请输入联系电话');
        return
      }
      if (!(/^1[3456789]\d{9}$/.test(userInfo.contactTelephone))) {
        util.msg('请输入正确的手机号');
        return;
      }
      if(this.data.password != "1234"){
        if(!/^[0-9a-zA-Z]{6,20}$/.test(this.data.password)){
            util.msg('密码不规范');
            return
        }
      }
      if(this.data.password != this.data.password2){
          util.msg('两次密码不一致');
          return
      }
      if(this.data.password != '1234'){
        userInfo.password = this.data.password;
      }else{
        userInfo.password = '';
      }
      if(userInfo.roleType=="2"){
        if(!userInfo.stallId){
          util.msg('请分配档口');
          return
        }
      }
      userInfo.openStatus = this.data.checked?1:0;
      if(!userInfo.headImage){
        userInfo.headImage = '';
      }
      // 档口id为空时移除
      if(!userInfo.stallId){
        delete userInfo['stallId'];
      }

      core.apiUpdateUser(userInfo, res => {

        // 更新列表数据
        this.updateItem();

        Toast.success('操作成功');
        setTimeout(function () {
          wx.navigateBack({
            delta: 1,
          })
        }, 1000);
      })
      
  },

  // 更新列表数据
  updateItem(){
    if(this.data.type==1){
      // 个人信息  
      wx.setStorageSync('userInfo', this.data.userInfo)
    }else{  
      // 食堂人员信息
      let pages = getCurrentPages();
      let prevPage = pages[pages.length - 2];
      var name = "dataList["+this.data.index+"].name";
      var headImage = "dataList["+this.data.index+"].headImage";
      prevPage.setData({
        [name]:this.data.userInfo.name,
        [headImage]:this.data.userInfo.headImage
      })
      // 是否修改的是自己的信息
      var userInfoStorage = wx.getStorageSync('userInfo');
      if(this.data.userInfo.id==userInfoStorage.id){
        wx.setStorageSync('userInfo', this.data.userInfo)
      }

      // 是否查询结果中修改数据
      if(pages.length>4){
        let prevPageTop = pages[pages.length - 4];
        if(prevPageTop.route=='pages/coreAdmin/personnel/personnel'){
          var dataList = prevPageTop.data.dataList;
          if(dataList && dataList.length>0){
            for(var i=0;i<dataList.length;i++){
              if(dataList[i].id==this.data.id){
                dataList[i].name = this.data.userInfo.name
                dataList[i].headImage = this.data.userInfo.headImage
                prevPageTop.setData({
                  dataList:dataList
                })
              }
            }
          }
        }
      }

    }
  },


  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})